package com.loong.loong.hik.property.request.door;

import java.util.List;
import lombok.Data;

/**
 * @author jinyiang
 * @date 2023/5/16 10:03
 */
@Data
public class DoorSearchRequest {
	//名称，模糊搜索，最大长度32，若包含中文，最大长度指不超过按照指定编码的字节长度，即getBytes(“utf-8”).length
	private String name;
	//区域编号,可以为空;
	//String[]，支持根据区域批量查询；
	//区域编号个数
	//<=1000个；
	//单个长度<=64Byte；，可从查询区域列表v2接口获取返回参数indexCode
	private List<String> regionIndexCodes;
	//true时，搜索regionIndexCodes及其子孙区域的资源；
	//false时，只搜索 regionIndexCodes的资源
	private boolean isSubRegion;
	private int pageNo;
	private int pageSize;
	//	权限码集合，详见附录A.3 资源权限码中门禁点对应的资源权限码
	private List<String> authCodes;

	private List<Expression> expressions;

	private String orderBy;
	private String orderType;
	@Data
	public class Expression{
		//资源属性名，key传updateTime，operator传between可以查询特定时间段更新的数据，考虑到校时和夏令时，建议值查询过去一天的数据变更
		private String key;
		//操作运算符，
		//0 ：=，
		//1 ：>=，
		//2 ：<=，
		//3 ：in，
		//4 ：not in，
		//5 ：between，
		//6 ：like，
		//7 ：pre like，
		//8 ：suffix like
		private int operator;
		//	资源属性值，=、>=、<=、like、values数组长度只能是1；
		//in、not in，values数组长度大于1，最大不超时20；
		//in_array用于查询key值有多个value的情况，例如行车监控添加的设备类型为encodeDevice、encodeDeviceMss两个类型，使用encodeDevice或者encodeDeviceMss都可以查询到；between只能用于整形、日期
		//；like只能用于字符串。
		private List<String> values;
	}
}
